/**
 * Created by dell on 2017/11/13.
 */
import axios from 'axios'
axios.defaults.withCredentials = true
axios.defaults.timeout = 30000
// 本地的 http://localhost:8080
const host = 'https://www.thaihall.com/api.php'
// 沙盒环境
// const host = 'https://pcsanbox.thaihall.com/api.php'
// 打包到生产环境和开发环境和测试环境
// const host = '/api.php'

// 封装get请求
function getRequest (paramUrl, params) {
  const url = `${host}` + paramUrl
  return axios.get(url, params)
    .then((res) => {
      return Promise.resolve(res.data)
    }).catch((err) => {
      return Promise.reject(err)
    })
}
// 获取导航条
export function getNavList (type) {
  const url = `${host}?ctl=goods&act=goods_class`
  return axios.get(url, { params: {type} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取今日特惠信息
export function discounts () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=adv&act=get_goods_list')
    resolve(t)
  })
}

// 获取轮播图信息
export function slides () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=adv&act=get_banner_list')
    resolve(t)
  })
}

// 获取分类商品信息
export function goodsList (type) {
  const url = `${host}?ctl=goods&act=goods_message`
  return axios.get(url, { params: {type} }).then((res) => {
    return Promise.resolve(res.data)
  })
}

// 用户退出
export function loginOut () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=user&act=logout')
    resolve(t)
  })
}
// 商品详情
export function goodsStatus (goodsId, type) {
  const url = `${host}?ctl=goods&act=get_goods_particulars`
  return axios.post(url, {
    id: goodsId,
    type: type
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 查重
// 用于 注册-用户名去重
// 用于 注册-手机号码除重
// 用于 注册-邮箱去重
// 该函数可以用于取消请求
export function duplicateChecking (data) {
  const url = `${host}?ctl=user&act=check_repetition`
  // 用于取消请求
  let CancelToken = axios.CancelToken
  let source = CancelToken.source()
  return {
    source,
    post: axios.post(url, data, {
      cancelToken: source.token
    }).then((res) => {
      return Promise.resolve(res.data)
    }).catch((err) => {
      return Promise.reject(err)
    })
  }
}
// 注册-发送验证短信
export function sendInfoCheck (val) {
  const url = `${host}?ctl=sms&act=send`
  return axios.post(url, {
    user_mobile: val,
    sms_template_name: 'TPL_SMS_REGISTER_VERIFY_CODE'
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 验证短信验证码
export function ValidateInfo (phoneNumber, verificationCodeModel) {
  const url = `${host}?ctl=sms&act=verify`
  return axios.post(url, {
    user_mobile: phoneNumber,
    sms_code: verificationCodeModel
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 用户登录
export function userLogin (username, password) {
  const url = `${host}?ctl=user&act=do_login`
  return axios.post(url, {
    user_account: username,
    user_pwd: password
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 改变商品颜色的价格
export function changeColor (goodsParams) {
  const url = `${host}?ctl=goods&act=change_price`
  return axios.post(url, goodsParams).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 改变商品一级属性价格
export function changeVersion (goodsParams) {
  const url = `${host}?ctl=goods&act=change_sx_price`
  return axios.post(url, goodsParams).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 猜你喜欢 --- 看了又看 --- 相关推荐
export function guessYouLike (goodsId, advertisingType) {
  const url = `${host}?ctl=goods&act=guess_you_like`
  return axios.post(url, {
    goods_id: goodsId,
    type: advertisingType
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 注册显示——猜你喜欢
export function registerGuessYouLike () {
  const url = `${host}?ctl=goods&act=registered_you_like`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 商品推荐
export function productRecommend () {
  const url = `${host}?ctl=goods&act=random_goods`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取地址列表
export function addressList (type) {
  const url = `${host}?ctl=address&act=get`
  return axios({
    method: 'post',
    url: url,
    data: { pay_type: type }
    // withCredentials: true
  }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 忘记密码-发送验证短信
export function findPwd (phoneNum) {
  const url = `${host}?ctl=sms&act=send`
  return axios.post(url, {
    sms_template_name: 'TPL_SMS_FORGET_PASSWORD_VERIFY_CODE',
    user_mobile: phoneNum
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 忘记密码-重置新密码
export function checkPwd (phoneNum, pwd, code) {
  const url = `${host}?ctl=user&act=reset_password`
  return axios.post(url, {
    user_mobile: phoneNum,
    user_pwd: pwd,
    sms_code: code
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 修改密码
export function changePwd (oldLoginPassword, newLoginPassword) {
  const url = `${host}?ctl=user&act=change_password`
  return axios.post(url, {
    old_passwd: oldLoginPassword,
    new_passwd: newLoginPassword
  }).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 获取地址选项：全额
export function getAddressItemFull (type, pid, lang) {
  const url = `${host}?ctl=address&act=get_level`
  return axios.get(url, { params: {type, pid, lang} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取地址选项：分期
export function getAddressItemInstallment (type, pid, lang) {
  const url = `${host}?ctl=address&act=get_open_address`
  return axios.get(url, { params: {type, pid, lang} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 新增地址
export function setAddress (params) {
  const url = `${host}?ctl=address&act=add`
  return axios.post(url, params).then((res) => {
    return Promise.resolve(res.data)
  }).catch((err) => {
    return Promise.reject(err)
  })
}
// 删除某个地址
export function deleteAddressItem (address_id) {
  const url = `${host}?ctl=address&act=delete`
  return axios.get(url, { params: {address_id} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 设为默认地址
export function setDefaultAdderss (address_id) {
  const url = `${host}?ctl=address&act=set_default`
  return axios.post(url, { address_id }).then((res) => {
    return Promise.resolve(res.data)
  })
}

// 更新地址
export function reSetAdderss (data) {
  const url = `${host}?ctl=address&act=edit`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 分期付款--全额付款----确认订单信息
export function fullBuy (data) {
  const url = `${host}?ctl=goods&act=order_goods`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 全额付款确定订单
export function fullPayConfirm (data) {
  const url = `${host}?ctl=order&act=newamountorder`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 分期付款确定订单
export function installmentPayConfirm (data) {
  const url = `${host}?ctl=order&act=newstageorder`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 查看订单详情
export function orderDetails (data) {
  const url = `${host}?ctl=order&act=order_details`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 取消订单
export function cancelOrder (data) {
  const url = `${host}?ctl=order&act=cancel_order`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 查看全部订单
export function getOrderAll (page, type, keyword) {
  const url = `${host}?ctl=order&act=get_orders`
  return axios.get(url, { params: {type, page, keyword} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取个人额度
export function getOrderlimit () {
  const url = `${host}?ctl=user&act=get_quota`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 热门搜索
export function hotSearch () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=goods&act=host_search')
    resolve(t)
  })
}
// 按照商品类型搜索商品 --- 按照商品名称搜索商品
export function goodsTypeSearch (data) {
  const url = `${host}?ctl=goods&act=goods_search`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  个人中心获取用户信息
export function getUserInfo () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=user&act=get_user_data')
    resolve(t)
  })
}
//  账号设置-修改手机号码
export function modifyPhoneNum (data) {
  const url = `${host}?ctl=user&act=update_mobile`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  获取修改手机号码短信和获取修改邮箱短信
export function getPhoneNum (data) {
  const url = `${host}?ctl=sms&act=mobile_send`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  更换邮箱和手机验证短信验证码
export function checkVerificationCode (data) {
  const url = `${host}?ctl=sms&act=email_verify`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  商城活动
export function shopActivity (data) {
  const url = `${host}?ctl=adv&act=get_activity`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 消息列表
export function selfInfoList (data) {
  const url = `${host}?ctl=user&act=get_user_news`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  获取所有支付接口信息
export function getPayGateway () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=pay&act=get_pay_gateway_list')
    resolve(t)
  })
}
//  请求支付
export function requestPay (data) {
  const url = `${host}?ctl=pay&act=gen_prepay_order`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  修改用户名
export function modifyUserName (data) {
  const url = `${host}?ctl=user&act=update_user_name`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 设置或修改社交账号facebook或instagram
export function changeSocialAccount (data) {
  const url = `${host}?ctl=user&act=update_user_infa`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 上传base64编码的头像图片
export function updateProfile (data) {
  const url = `${host}?ctl=user&act=update_head_img`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 上传base64编码的图片文件
export function updateFile (data) {
  const url = `${host}?ctl=file&act=upload_base64_img`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 账号设置-修改邮箱
export function changeEmail (email) {
  const url = `${host}?ctl=user&act=update_email`
  return axios.get(url, { params: {email} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取身份认证详情
//  获取用户身份认证状态
export function identityInfo () {
  const url = `${host}?ctl=user&act=get_user_status`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  查询支付状态
export function queryPayStatus (data) {
  const url = `${host}?ctl=pay&act=query_pay_status`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 上传文件
export function uploadImg (param) {
  const url = `${host}?ctl=file&act=upload`
  let config = {
    headers: {'Content-Type': 'multipart/form-data'},
    timeout: 180000
  }
  return axios.post(url, param, config).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 上传认证资料图片
export function uploadIdentificationImg (param) {
  const url = `${host}?ctl=user&act=upload_credit_file`
  let config = {
    headers: {'Content-Type': 'multipart/form-data'}
  }
  return axios.post(url, param, config).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 注册
export function register (data) {
  const url = `${host}?ctl=user&act=register`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取认证过期详情
export function getDatedIndentity (type) {
  const url = `${host}?ctl=user&act=out_data_verify&type=${type}`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取认证失败详情
export function getFailIndentity (type) {
  const url = `${host}?ctl=user&act=get_fail_verify&type=${type}`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 修改认证照片
export function updateIdentity (user_verify) {
  const url = `${host}?ctl=user&act=update_verify`
  return axios.post(url, user_verify).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 用户认证
export function setIdentity (data) {
  const url = `${host}?ctl=user&act=commit_credit_data`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 退货
export function applyReturns (data) {
  const url = `${host}?ctl=Order&act=askGoodsReturn`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 删除订单
export function deleteOrder (data) {
  const url = `${host}?ctl=order&act=delete_order`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 能否提额
export function canRaiseQuota () {
  const url = `${host}?ctl=User&act=canRaiseQuota`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 验证优惠码
export function checkPromotionCode (code) {
  const url = `${host}?ctl=Code&act=verifica_code`
  return axios.get(url, { params: { code } }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 申请提额
export function raiseQuota () {
  const url = `${host}?ctl=User&act=raiseQuota`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}

// 获取帮助中心文章分类列表
export function getHelpList (type, center) {
  const url = `${host}?ctl=User&act=user_help_title`
  return axios.get(url, { params: {type, center} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取帮助中心文章内容
export function getHelpArticle (id, type) {
  const url = `${host}?ctl=User&act=get_help_article`
  return axios.get(url, { params: {id, type} }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 已还账单列表
export function hasBillList (data) {
  const url = `${host}?ctl=bills&act=bill_has_also`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 总待还，七天待还
export function stayBills () {
  const url = `${host}?ctl=bills&act=stay_bills`
  return axios.post(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取各个订单总数
export function getOrderTotal () {
  const url = `${host}?ctl=order&act=get_brief_order_info`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  账单明细
export function getBillDetail (order_id) {
  const url = `${host}?ctl=bills&act=bill_detail`
  return axios.get(url, { params: { order_id } }).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  待还账单列表
export function notBillList (data) {
  const url = `${host}?ctl=bills&act=stay_still_bills`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  还账
export function repay (data) {
  const url = `${host}?ctl=bills&act=payback`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  还清剩余账单
export function repaySurplus (data) {
  const url = `${host}?ctl=bills&act=pay_off_bills`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  请求支付（账单）
export function requestBillPay (data) {
  const url = `${host}?ctl=pay&act=gen_prepay_order`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  查询退货信息
export function requestReturnsInfo (data) {
  const url = `${host}?ctl=Order&act=get_goods_return_info`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  修改退货信息
export function modifyReturnsMsg (data) {
  const url = `${host}?ctl=Order&act=update_goods_return`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  自行上传寄件信息
export function uploadMailMsg (data) {
  const url = `${host}?ctl=Order&act=upload_express_info`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  获取退货地址
export function getReturnsAddress () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=Address&act=get_address_return')
    resolve(t)
  })
}
//  用户意见反馈
export function userIdeaTickling (data) {
  const url = `${host}?ctl=user&act=set_suggest`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  学校下拉
// 该函数可以用于取消请求
export function getSchool (data) {
  const url = `${host}?ctl=school&act=get_school`
  // 用于取消请求
  let CancelToken = axios.CancelToken
  let source = CancelToken.source()
  return {
    source,
    get: axios.get(url, { params: data, cancelToken: source.token }).then((res) => {
      return Promise.resolve(res.data)
    })
  }
}
//  学区下拉
// 该函数可以用于取消请求
export function getSchoolArea (data) {
  const url = `${host}?ctl=school&act=_get_campus`
  // 用于取消请求
  let CancelToken = axios.CancelToken
  let source = CancelToken.source()
  return {
    source,
    get: axios.get(url, { params: data, cancelToken: source.token }).then((res) => {
      return Promise.resolve(res.data)
    })
  }
}
// 获取用户信息
export function getUserInformation () {
  return new Promise((resolve, reject) => {
    let t = getRequest('?ctl=user&act=get_user_info')
    resolve(t)
  })
}
// 上传认证资料
export function proveData (data) {
  const url = `${host}?ctl=user&act=upload_file`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取分期付款地址
export function detailAddressList (type) {
  const url = `${host}?ctl=address&act=get_address_fenqi`
  return axios.get(url, { params: { type: type } }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 添加紧急联系人认证信息
export function addEmergency (data) {
  const url = `${host}?ctl=User&act=contacts`
  return axios.post(url, data).then(res => {
    return Promise.resolve(res.data)
  }).catch(err => {
    return Promise.reject(err)
  })
}
// 修改紧急联系人认证信息
export function editEmergency (data) {
  const url = `${host}?ctl=User&act=update_contacts`
  return axios.post(url, data).then(res => {
    return Promise.resolve(res.data)
  }).catch(err => {
    return Promise.reject(err)
  })
}
// 获取认证失败的紧急联系人信息
//  返回用户紧急联系人状态
export function getEmergency () {
  const url = `${host}?ctl=User&act=fail_contacts`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  }).catch(err => {
    return Promise.reject(err)
  })
}
// 获取用户全部认证状态
export function getAuthenStatus () {
  const url = `${host}?ctl=user&act=get_all_status`
  return axios.get(url).then((res) => {
    return Promise.resolve(res.data)
  }).catch(err => {
    return Promise.reject(err)
  })
}
// 申请换货
export function applyBarter (data) {
  const url = `${host}?ctl=Order&act=ask_exchange_goods`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 查询换货信息
export function requestBarterInfo (data) {
  const url = `${host}?ctl=Order&act=get_goods_exchange_info`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 修改换货信息
export function modifyBarterMsg (data) {
  const url = `${host}?ctl=Order&act=update_goods_exchange`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
//  获取2天的日期（不包含星期天）
export function getTwoDays (data) {
  const url = `${host}?ctl=date&act=get_week`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取有额度的学校
export function getLimitSchool (type) {
  const url = `${host}?ctl=school&act=get_school_quota`
  return axios.get(url, { params: { type: type } }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 官方物流回收
export function officialExpress (data) {
  const url = `${host}?ctl=Order&act=order_recover`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取官方物流信息
export function officialExpressInfo (data) {
  const url = `${host}?ctl=Order&act=get_recover_info`
  return axios.post(url, data).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取退换货倒计时关闭时间
export function countDown (data) {
  const url = `${host}?ctl=order&act=get_count_down`
  return axios.get(url, { params: data }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 用户获取优惠券
export function userGetCoupon (data) {
  const url = `${host}?ctl=code&act=get_coupons`
  return axios.get(url, {params: data}).then(res => {
    return Promise.resolve(res.data)
  })
}
// 用户使用优惠卷返回优惠后数据
export function userCouponReturnData (data) {
  const url = `${host}?ctl=code&act=get_installment`
  return axios.get(url, {params: data}).then(res => {
    return Promise.resolve(res.data)
  })
}
// 获取商品分期价格（pc端使用）
export function getGoodsStagesPrices (data) {
  const url = `${host}?ctl=goods&act=get_goods_stages_money`
  return axios.get(url, {params: data}).then(res => {
    return Promise.resolve(res.data)
  })
}
// 获取某些商品优惠券状态
export function getGoodsCouponStatus (data) {
  const url = `${host}?ctl=activity&act=get_all_conpon_status`
  return axios.get(url, { params: data }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 进入抢券队列
export function enterCouponQueue (data) {
  const url = `${host}?ctl=activity&act=enqueue`
  return axios.get(url, { params: data }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取某些商品的抢券结果
export function getCouponResult (data) {
  const url = `${host}?ctl=activity&act=get_coupon_result`
  return axios.get(url, { params: data }).then((res) => {
    return Promise.resolve(res.data)
  })
}
// 获取活动时间
export function getActiveTime (data) {
  const url = `${host}?ctl=activity&act=get_active_time`
  return axios.get(url, { params: data }).then((res) => {
    return Promise.resolve(res.data)
  })
}
